package ar.uade.edu.fain.ad.client.delegate;

import java.util.List;
import java.util.Set;

import ar.uade.edu.fain.ad.common.exception.MesaNoDisponibleException;
import ar.uade.edu.fain.ad.common.exception.PedidoCerradoException;
import ar.uade.edu.fain.ad.common.exception.ProductoNoDisponibleException;
import ar.uade.edu.fain.ad.common.transfer.ComandaVO;
import ar.uade.edu.fain.ad.common.transfer.MesaVO;
import ar.uade.edu.fain.ad.common.transfer.MozoVO;
import ar.uade.edu.fain.ad.common.transfer.PedidoVO;
import ar.uade.edu.fain.ad.common.transfer.SalonVO;
import ar.uade.edu.fain.ad.common.transfer.SectorVO;

public interface SalonServiceDelegate {

	public abstract List<SectorVO> buscarSectoresEn(SalonVO salonVO);
	
	public abstract Set<MesaVO> buscarMesasDisponiblesEn(
			SectorVO sectorVO, Integer cantidadComensales);
	
	public abstract PedidoVO abrirPedido(
			MozoVO mozoVO, Set<MesaVO> mesaVOs) 
			throws MesaNoDisponibleException;
	
	public abstract void agregarComanda(
			PedidoVO pedidoVO, ComandaVO comandaVOs)
			throws ProductoNoDisponibleException;
	
	public abstract Set<MesaVO> buscarMesasOcupadas(SalonVO salonVO);
	
	public abstract Set<PedidoVO> buscarPedidosActivos(SalonVO salonVO);
	
	public abstract void cerrarPedido(PedidoVO pedidoVO)
			throws PedidoCerradoException ;
	
}
